package PodsumowaniaLingwistyczne;

import java.util.LinkedList;
import java.util.List;

import ZmiennaLingwistyczna.WartoscLingwistyczna;
import csvIO.CsvRow;

public class SumaryzatorZlozonyAND implements ISumaryzator {

	private ISumaryzator sumaryzatorLewy;
	private ISumaryzator sumaryzatorPrawy;
	
	public SumaryzatorZlozonyAND(ISumaryzator sumaryzatorLewy, ISumaryzator sumaryzatorPrawy) {
		super();
		this.sumaryzatorLewy = sumaryzatorLewy;
		this.sumaryzatorPrawy = sumaryzatorPrawy;
	}

	@Override
	public float getPrzynaleznosc(CsvRow krotka) {
		return Math.min(sumaryzatorLewy.getPrzynaleznosc(krotka), sumaryzatorPrawy.getPrzynaleznosc(krotka));
	}

	@Override
	public List<ISumaryzator> getSumaryzatorySkladowe() {
		List<ISumaryzator> lista = new LinkedList<ISumaryzator>();

		if (sumaryzatorLewy instanceof Sumaryzator) {
			lista.add(sumaryzatorLewy);
		} else {
			lista.addAll(sumaryzatorLewy.getSumaryzatorySkladowe());
		}
		if (sumaryzatorPrawy instanceof Sumaryzator) {
			lista.add(sumaryzatorPrawy);
		} else {
			lista.addAll(sumaryzatorPrawy.getSumaryzatorySkladowe());
		}
		return lista;
	}

	@Override
	public WartoscLingwistyczna getWartoscLingwistyczna() {
		throw new UnsupportedOperationException("Te metode mozna wywolac tylko w niezlozonym sumaryzatorze.");
	}
	
	public String toString(){
		return sumaryzatorLewy.toString() + " i " + sumaryzatorPrawy.toString();
	}
	@Override
	public int getIndeksPolaKrotki() {
		throw new UnsupportedOperationException();
	}

}
